Load Libraries

library(geojsonio)
library(leaflet)
library(magrittr)
library(htmlwidgets)
library(RColorBrewer)
library(tidyverse)
library(rgdal)

Amsterdam

Load data

# Read shapefile: Spatial Polygon DB
amsterdamData <- geojson_read("geojson.json", method= "local", what = "sp")

Create maps

# Show Amsterdam building projects on a Leaflet map
# fasepal <- colorFactor(c("DeepSkyBlue", "MediumSpringGreen ", "Orange", "Tomato"), amsterdamData$Fase)

fasepal <- colorNumeric(c("Tomato", "Orange", "MediumSpringGreen", "Skyblue"), amsterdamData$Start_bouw)

leaflet(amsterdamData) %>%
  setView(lng = 4.8945, lat = 52.3667, zoom = 12) %>%
  addProviderTiles("nlmaps.standaard") %>% 
  addProviderTiles("Esri.WorldGrayCanvas") %>%
  addPolygons(stroke = TRUE, color = "white", weight="1", smoothFactor = 0.3, fillOpacity = 0.7, fillColor = ~fasepal(Start_bouw), popup = ~Projectnaam) %>%
  addLegend(pal = fasepal, values = ~Start_bouw, opacity = 0.8, title = "Start bouw", position = "topright", labFormat = labelFormat(big.mark = ""))

Load CBS data

# Alleen eerste keer
# fileName <- "buurten.geojson"
# wijkenenbuurten <- geojson_read(fileName, what = "sp")
# wijkenenbuurten <- wijkenenbuurten[na.omit(wijkenenbuurten@data$GM_NAAM == "Amsterdam"),]
# writeOGR(wijkenenbuurten, "amsterdamBuurten.geojson", "GeoJSON", driver="GeoJSON")

amsterdamBuurtenData <- geojson_read("amsterdamBuurten.geojson", what = "sp")
amsterdamBuurtenData65 <- amsterdamBuurtenData[amsterdamBuurtenData$P_65_EO_JR >0 ,]

agepal <- colorNumeric(c("Tomato", "Orange", "MediumSpringGreen", "Skyblue"), amsterdamBuurtenData65@data$P_65_EO_JR)

leaflet(amsterdamBuurtenData65) %>%
  setView(lng = 4.8945, lat = 52.3667, zoom = 12) %>%
  addProviderTiles("nlmaps.standaard") %>% 
  addProviderTiles("Esri.WorldGrayCanvas") %>%
  addPolygons(stroke = TRUE, color = "white", weight="1", smoothFactor = 0.3, fillOpacity = 0.7, fillColor = ~agepal(P_65_EO_JR), popup = ~BU_NAAM) %>%
  addLegend(pal = agepal, values = ~P_65_EO_JR, opacity = 0.8, title = "% 65 jaar en ouder", position = "topright") 
amsterdamBuurtenData <- geojson_read("amsterdamBuurten.geojson", what = "sp")
amsterdamBuurtenDataWOZ <- amsterdamBuurtenData[amsterdamBuurtenData$WOZ > 0 ,]

wozpal <- colorNumeric(c("Tomato", "Orange", "MediumSpringGreen", "Skyblue"), amsterdamBuurtenDataWOZ$WOZ)

leaflet(amsterdamBuurtenDataWOZ) %>%
  setView(lng = 4.8945, lat = 52.3667, zoom = 12) %>%
  addProviderTiles("nlmaps.standaard") %>% 
  addProviderTiles("Esri.WorldGrayCanvas") %>%
  addPolygons(stroke = TRUE, color = "white", weight="1", smoothFactor = 0.3, fillOpacity = 0.7, fillColor = ~wozpal(WOZ), popup = ~BU_NAAM) %>%
  addLegend(pal = wozpal, values = ~WOZ, opacity = 0.8, title = "WOZ-waarde (x 1.000 EUR)", position = "topright") 

Combine maps

leaflet() %>%
  setView(lng = 4.8945, lat = 52.3667, zoom = 12) %>%
  addProviderTiles("nlmaps.standaard") %>% 
  addProviderTiles("Esri.WorldGrayCanvas") %>%
  addPolygons(data = amsterdamBuurtenDataWOZ, stroke = TRUE, color = "white", weight="1", smoothFactor = 0.3, fillOpacity = 0.4, fillColor = ~wozpal(WOZ), popup = ~BU_NAAM) %>%
  addLegend(data = amsterdamBuurtenDataWOZ, pal = wozpal, values = ~WOZ, opacity = 0.8, title = "WOZ-waarde (x 1.000 EUR)", position = "topright") %>%
  addPolygons(data = amsterdamData, stroke = TRUE, color = "white", weight="1", smoothFactor = 0.3, fillOpacity = 0.9, fillColor = "DodgerBlue ")
leaflet() %>%
  setView(lng = 4.8945, lat = 52.3667, zoom = 12) %>%
  addProviderTiles("nlmaps.standaard") %>% 
  addProviderTiles("Esri.WorldGrayCanvas") %>%
  addPolygons(data = amsterdamBuurtenData65, stroke = TRUE, color = "white", weight="1", smoothFactor = 0.3, fillOpacity = 0.4, fillColor = ~agepal(P_65_EO_JR), popup = ~BU_NAAM) %>%
  addLegend(data = amsterdamBuurtenData65, pal = agepal, values = ~P_65_EO_JR, opacity = 0.8, title = "% 65 jaar en ouder", position = "topright") %>%
  addPolygons(data = amsterdamData, stroke = TRUE, color = "white", weight="1", smoothFactor = 0.3, fillOpacity = 0.7, fillColor = "DodgerBlue ")

Oss

# Alleen eerste keer
# fileName <- "buurten.geojson"
# wijkenenbuurtenOss <- geojson_read(fileName, what = "sp")
# wijkenenbuurtenOss <- wijkenenbuurtenOss[na.omit(wijkenenbuurtenOss@data$GM_NAAM == "Oss"),]
# writeOGR(wijkenenbuurtenOss, "ossBuurten.geojson", "GeoJSON", driver="GeoJSON")

wijkenenbuurtenOss <- geojson_read("ossBuurten.geojson", what = "sp")
wijkenenbuurtenOss <- wijkenenbuurtenOss[wijkenenbuurtenOss$WOZ > 0 ,]

leaflet(wijkenenbuurtenOss) %>%
  setView(lng = 5.5140, lat = 51.7612, zoom = 12) %>%
  addProviderTiles("nlmaps.standaard") %>% 
  addProviderTiles("Esri.WorldGrayCanvas") %>%
  addPolygons(stroke = TRUE, color = "white", weight="1", smoothFactor = 0.3, fillOpacity = 0.7, fillColor = ~wozpal(WOZ), popup = ~BU_NAAM) %>%
  addLegend(pal = wozpal, values = ~WOZ, opacity = 0.8, title = "% 65 jaar en ouder", position = "topright") 
LS0tCnRpdGxlOiAiVm9sa3NiYW5rIgpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKZmlnX3dpZHRoOiA2IApmaWdfaGVpZ2h0OiA0Ci0tLQoKIyMgTG9hZCBMaWJyYXJpZXMKYGBge3IgbWVzc2FnZT1UUlVFLCB3YXJuaW5nPVRSVUV9CmxpYnJhcnkoZ2VvanNvbmlvKQpsaWJyYXJ5KGxlYWZsZXQpCmxpYnJhcnkobWFncml0dHIpCmxpYnJhcnkoaHRtbHdpZGdldHMpCmxpYnJhcnkoUkNvbG9yQnJld2VyKQpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShyZ2RhbCkKYGBgCiMgQW1zdGVyZGFtCiMjIExvYWQgZGF0YQpgYGB7ciBtZXNzYWdlPVRSVUUsIHdhcm5pbmc9VFJVRX0KIyBSZWFkIHNoYXBlZmlsZTogU3BhdGlhbCBQb2x5Z29uIERCCmFtc3RlcmRhbURhdGEgPC0gZ2VvanNvbl9yZWFkKCJnZW9qc29uLmpzb24iLCBtZXRob2Q9ICJsb2NhbCIsIHdoYXQgPSAic3AiKQpgYGAKCiMjIENyZWF0ZSBtYXBzCmBgYHtyfQojIFNob3cgQW1zdGVyZGFtIGJ1aWxkaW5nIHByb2plY3RzIG9uIGEgTGVhZmxldCBtYXAKIyBmYXNlcGFsIDwtIGNvbG9yRmFjdG9yKGMoIkRlZXBTa3lCbHVlIiwgIk1lZGl1bVNwcmluZ0dyZWVuICIsICJPcmFuZ2UiLCAiVG9tYXRvIiksIGFtc3RlcmRhbURhdGEkRmFzZSkKCmZhc2VwYWwgPC0gY29sb3JOdW1lcmljKGMoIlRvbWF0byIsICJPcmFuZ2UiLCAiTWVkaXVtU3ByaW5nR3JlZW4iLCAiU2t5Ymx1ZSIpLCBhbXN0ZXJkYW1EYXRhJFN0YXJ0X2JvdXcpCgpsZWFmbGV0KGFtc3RlcmRhbURhdGEpICU+JQogIHNldFZpZXcobG5nID0gNC44OTQ1LCBsYXQgPSA1Mi4zNjY3LCB6b29tID0gMTIpICU+JQogIGFkZFByb3ZpZGVyVGlsZXMoIm5sbWFwcy5zdGFuZGFhcmQiKSAlPiUgCiAgYWRkUHJvdmlkZXJUaWxlcygiRXNyaS5Xb3JsZEdyYXlDYW52YXMiKSAlPiUKICBhZGRQb2x5Z29ucyhzdHJva2UgPSBUUlVFLCBjb2xvciA9ICJ3aGl0ZSIsIHdlaWdodD0iMSIsIHNtb290aEZhY3RvciA9IDAuMywgZmlsbE9wYWNpdHkgPSAwLjcsIGZpbGxDb2xvciA9IH5mYXNlcGFsKFN0YXJ0X2JvdXcpLCBwb3B1cCA9IH5Qcm9qZWN0bmFhbSkgJT4lCiAgYWRkTGVnZW5kKHBhbCA9IGZhc2VwYWwsIHZhbHVlcyA9IH5TdGFydF9ib3V3LCBvcGFjaXR5ID0gMC44LCB0aXRsZSA9ICJTdGFydCBib3V3IiwgcG9zaXRpb24gPSAidG9wcmlnaHQiLCBsYWJGb3JtYXQgPSBsYWJlbEZvcm1hdChiaWcubWFyayA9ICIiKSkKYGBgCgojIyBMb2FkIENCUyBkYXRhCmBgYHtyfQojIEFsbGVlbiBlZXJzdGUga2VlcgojIGZpbGVOYW1lIDwtICJidXVydGVuLmdlb2pzb24iCiMgd2lqa2VuZW5idXVydGVuIDwtIGdlb2pzb25fcmVhZChmaWxlTmFtZSwgd2hhdCA9ICJzcCIpCiMgd2lqa2VuZW5idXVydGVuIDwtIHdpamtlbmVuYnV1cnRlbltuYS5vbWl0KHdpamtlbmVuYnV1cnRlbkBkYXRhJEdNX05BQU0gPT0gIkFtc3RlcmRhbSIpLF0KIyB3cml0ZU9HUih3aWprZW5lbmJ1dXJ0ZW4sICJhbXN0ZXJkYW1CdXVydGVuLmdlb2pzb24iLCAiR2VvSlNPTiIsIGRyaXZlcj0iR2VvSlNPTiIpCgphbXN0ZXJkYW1CdXVydGVuRGF0YSA8LSBnZW9qc29uX3JlYWQoImFtc3RlcmRhbUJ1dXJ0ZW4uZ2VvanNvbiIsIHdoYXQgPSAic3AiKQphbXN0ZXJkYW1CdXVydGVuRGF0YTY1IDwtIGFtc3RlcmRhbUJ1dXJ0ZW5EYXRhW2Ftc3RlcmRhbUJ1dXJ0ZW5EYXRhJFBfNjVfRU9fSlIgPjAgLF0KCmFnZXBhbCA8LSBjb2xvck51bWVyaWMoYygiVG9tYXRvIiwgIk9yYW5nZSIsICJNZWRpdW1TcHJpbmdHcmVlbiIsICJTa3libHVlIiksIGFtc3RlcmRhbUJ1dXJ0ZW5EYXRhNjVAZGF0YSRQXzY1X0VPX0pSKQoKbGVhZmxldChhbXN0ZXJkYW1CdXVydGVuRGF0YTY1KSAlPiUKICBzZXRWaWV3KGxuZyA9IDQuODk0NSwgbGF0ID0gNTIuMzY2Nywgem9vbSA9IDEyKSAlPiUKICBhZGRQcm92aWRlclRpbGVzKCJubG1hcHMuc3RhbmRhYXJkIikgJT4lIAogIGFkZFByb3ZpZGVyVGlsZXMoIkVzcmkuV29ybGRHcmF5Q2FudmFzIikgJT4lCiAgYWRkUG9seWdvbnMoc3Ryb2tlID0gVFJVRSwgY29sb3IgPSAid2hpdGUiLCB3ZWlnaHQ9IjEiLCBzbW9vdGhGYWN0b3IgPSAwLjMsIGZpbGxPcGFjaXR5ID0gMC43LCBmaWxsQ29sb3IgPSB+YWdlcGFsKFBfNjVfRU9fSlIpLCBwb3B1cCA9IH5CVV9OQUFNKSAlPiUKICBhZGRMZWdlbmQocGFsID0gYWdlcGFsLCB2YWx1ZXMgPSB+UF82NV9FT19KUiwgb3BhY2l0eSA9IDAuOCwgdGl0bGUgPSAiJSA2NSBqYWFyIGVuIG91ZGVyIiwgcG9zaXRpb24gPSAidG9wcmlnaHQiKSAKYGBgCgpgYGB7cn0KYW1zdGVyZGFtQnV1cnRlbkRhdGEgPC0gZ2VvanNvbl9yZWFkKCJhbXN0ZXJkYW1CdXVydGVuLmdlb2pzb24iLCB3aGF0ID0gInNwIikKYW1zdGVyZGFtQnV1cnRlbkRhdGFXT1ogPC0gYW1zdGVyZGFtQnV1cnRlbkRhdGFbYW1zdGVyZGFtQnV1cnRlbkRhdGEkV09aID4gMCAsXQoKd296cGFsIDwtIGNvbG9yTnVtZXJpYyhjKCJUb21hdG8iLCAiT3JhbmdlIiwgIk1lZGl1bVNwcmluZ0dyZWVuIiwgIlNreWJsdWUiKSwgYW1zdGVyZGFtQnV1cnRlbkRhdGFXT1okV09aKQoKbGVhZmxldChhbXN0ZXJkYW1CdXVydGVuRGF0YVdPWikgJT4lCiAgc2V0VmlldyhsbmcgPSA0Ljg5NDUsIGxhdCA9IDUyLjM2NjcsIHpvb20gPSAxMikgJT4lCiAgYWRkUHJvdmlkZXJUaWxlcygibmxtYXBzLnN0YW5kYWFyZCIpICU+JSAKICBhZGRQcm92aWRlclRpbGVzKCJFc3JpLldvcmxkR3JheUNhbnZhcyIpICU+JQogIGFkZFBvbHlnb25zKHN0cm9rZSA9IFRSVUUsIGNvbG9yID0gIndoaXRlIiwgd2VpZ2h0PSIxIiwgc21vb3RoRmFjdG9yID0gMC4zLCBmaWxsT3BhY2l0eSA9IDAuNywgZmlsbENvbG9yID0gfndvenBhbChXT1opLCBwb3B1cCA9IH5CVV9OQUFNKSAlPiUKICBhZGRMZWdlbmQocGFsID0gd296cGFsLCB2YWx1ZXMgPSB+V09aLCBvcGFjaXR5ID0gMC44LCB0aXRsZSA9ICJXT1otd2FhcmRlICh4IDEuMDAwIEVVUikiLCBwb3NpdGlvbiA9ICJ0b3ByaWdodCIpIApgYGAKIyMgQ29tYmluZSBtYXBzCgpgYGB7cn0KbGVhZmxldCgpICU+JQogIHNldFZpZXcobG5nID0gNC44OTQ1LCBsYXQgPSA1Mi4zNjY3LCB6b29tID0gMTIpICU+JQogIGFkZFByb3ZpZGVyVGlsZXMoIm5sbWFwcy5zdGFuZGFhcmQiKSAlPiUgCiAgYWRkUHJvdmlkZXJUaWxlcygiRXNyaS5Xb3JsZEdyYXlDYW52YXMiKSAlPiUKICBhZGRQb2x5Z29ucyhkYXRhID0gYW1zdGVyZGFtQnV1cnRlbkRhdGFXT1osIHN0cm9rZSA9IFRSVUUsIGNvbG9yID0gIndoaXRlIiwgd2VpZ2h0PSIxIiwgc21vb3RoRmFjdG9yID0gMC4zLCBmaWxsT3BhY2l0eSA9IDAuNCwgZmlsbENvbG9yID0gfndvenBhbChXT1opLCBwb3B1cCA9IH5CVV9OQUFNKSAlPiUKICBhZGRMZWdlbmQoZGF0YSA9IGFtc3RlcmRhbUJ1dXJ0ZW5EYXRhV09aLCBwYWwgPSB3b3pwYWwsIHZhbHVlcyA9IH5XT1osIG9wYWNpdHkgPSAwLjgsIHRpdGxlID0gIldPWi13YWFyZGUgKHggMS4wMDAgRVVSKSIsIHBvc2l0aW9uID0gInRvcHJpZ2h0IikgJT4lCiAgYWRkUG9seWdvbnMoZGF0YSA9IGFtc3RlcmRhbURhdGEsIHN0cm9rZSA9IFRSVUUsIGNvbG9yID0gIndoaXRlIiwgd2VpZ2h0PSIxIiwgc21vb3RoRmFjdG9yID0gMC4zLCBmaWxsT3BhY2l0eSA9IDAuOSwgZmlsbENvbG9yID0gIkRvZGdlckJsdWUgIikKYGBgCgpgYGB7cn0KbGVhZmxldCgpICU+JQogIHNldFZpZXcobG5nID0gNC44OTQ1LCBsYXQgPSA1Mi4zNjY3LCB6b29tID0gMTIpICU+JQogIGFkZFByb3ZpZGVyVGlsZXMoIm5sbWFwcy5zdGFuZGFhcmQiKSAlPiUgCiAgYWRkUHJvdmlkZXJUaWxlcygiRXNyaS5Xb3JsZEdyYXlDYW52YXMiKSAlPiUKICBhZGRQb2x5Z29ucyhkYXRhID0gYW1zdGVyZGFtQnV1cnRlbkRhdGE2NSwgc3Ryb2tlID0gVFJVRSwgY29sb3IgPSAid2hpdGUiLCB3ZWlnaHQ9IjEiLCBzbW9vdGhGYWN0b3IgPSAwLjMsIGZpbGxPcGFjaXR5ID0gMC40LCBmaWxsQ29sb3IgPSB+YWdlcGFsKFBfNjVfRU9fSlIpLCBwb3B1cCA9IH5CVV9OQUFNKSAlPiUKICBhZGRMZWdlbmQoZGF0YSA9IGFtc3RlcmRhbUJ1dXJ0ZW5EYXRhNjUsIHBhbCA9IGFnZXBhbCwgdmFsdWVzID0gflBfNjVfRU9fSlIsIG9wYWNpdHkgPSAwLjgsIHRpdGxlID0gIiUgNjUgamFhciBlbiBvdWRlciIsIHBvc2l0aW9uID0gInRvcHJpZ2h0IikgJT4lCiAgYWRkUG9seWdvbnMoZGF0YSA9IGFtc3RlcmRhbURhdGEsIHN0cm9rZSA9IFRSVUUsIGNvbG9yID0gIndoaXRlIiwgd2VpZ2h0PSIxIiwgc21vb3RoRmFjdG9yID0gMC4zLCBmaWxsT3BhY2l0eSA9IDAuNywgZmlsbENvbG9yID0gIkRvZGdlckJsdWUgIikKYGBgCgojIE9zcwoKYGBge3J9CiMgQWxsZWVuIGVlcnN0ZSBrZWVyCiMgZmlsZU5hbWUgPC0gImJ1dXJ0ZW4uZ2VvanNvbiIKIyB3aWprZW5lbmJ1dXJ0ZW5Pc3MgPC0gZ2VvanNvbl9yZWFkKGZpbGVOYW1lLCB3aGF0ID0gInNwIikKIyB3aWprZW5lbmJ1dXJ0ZW5Pc3MgPC0gd2lqa2VuZW5idXVydGVuT3NzW25hLm9taXQod2lqa2VuZW5idXVydGVuT3NzQGRhdGEkR01fTkFBTSA9PSAiT3NzIiksXQojIHdyaXRlT0dSKHdpamtlbmVuYnV1cnRlbk9zcywgIm9zc0J1dXJ0ZW4uZ2VvanNvbiIsICJHZW9KU09OIiwgZHJpdmVyPSJHZW9KU09OIikKCndpamtlbmVuYnV1cnRlbk9zcyA8LSBnZW9qc29uX3JlYWQoIm9zc0J1dXJ0ZW4uZ2VvanNvbiIsIHdoYXQgPSAic3AiKQp3aWprZW5lbmJ1dXJ0ZW5Pc3MgPC0gd2lqa2VuZW5idXVydGVuT3NzW3dpamtlbmVuYnV1cnRlbk9zcyRXT1ogPiAwICxdCgpsZWFmbGV0KHdpamtlbmVuYnV1cnRlbk9zcykgJT4lCiAgc2V0VmlldyhsbmcgPSA1LjUxNDAsIGxhdCA9IDUxLjc2MTIsIHpvb20gPSAxMikgJT4lCiAgYWRkUHJvdmlkZXJUaWxlcygibmxtYXBzLnN0YW5kYWFyZCIpICU+JSAKICBhZGRQcm92aWRlclRpbGVzKCJFc3JpLldvcmxkR3JheUNhbnZhcyIpICU+JQogIGFkZFBvbHlnb25zKHN0cm9rZSA9IFRSVUUsIGNvbG9yID0gIndoaXRlIiwgd2VpZ2h0PSIxIiwgc21vb3RoRmFjdG9yID0gMC4zLCBmaWxsT3BhY2l0eSA9IDAuNywgZmlsbENvbG9yID0gfndvenBhbChXT1opLCBwb3B1cCA9IH5CVV9OQUFNKSAlPiUKICBhZGRMZWdlbmQocGFsID0gd296cGFsLCB2YWx1ZXMgPSB+V09aLCBvcGFjaXR5ID0gMC44LCB0aXRsZSA9ICIlIDY1IGphYXIgZW4gb3VkZXIiLCBwb3NpdGlvbiA9ICJ0b3ByaWdodCIpIApgYGAKCg==